/**
 * 页面配置文件
 * 用于控制一些页面的功能、开关、排序等
 */

// 首页数据加载配置 （用于配合首页组件来装修首页）
export const homeDataConfig = {

  // 帖子数据获取 
  // 可选: follow(关注), replyTime(回复时间), created(发布时间), views(浏览量), likes(点赞数), top(置顶)
  postSortTypes: [
    'top',
    'replyTime',
    'views',
    'created'
  ],//获取后变量名为 postList_排序名 例如 postList_replyTime
  
  // 文章数据获取 
  // 可选: created(最新), replyTime(回复时间), likes(点赞数), views(浏览量), commentsNum(评论数)
  articleSortTypes: [
    'views',
    'likes'
  ],//获取后变量名为 contentsList_排序名 例如 contentsList_replyTime

  // 动态数据获取
  // 可选: follow(关注), created(最新), likes(最热)
  spaceSortTypes: [
    'created',
  ],//获取后变量名为 spaceList_排序名 例如 spaceList_follow

  // 应用数据获取 (前提安装并打开软件库插件) 
  // 可选: created(最新), score(评分), commentsNum(评论数), random(随机)
  appSortTypes: [
    'random',
    'score'
  ],//获取后变量名为 appList_排序名 例如 appList_created
  
  // 商品数据获取
  // 可选: sellNum(销量), created(发布时间)
  shopSortTypes: [
    'sellNum',
    'created'
  ],//获取后变量名为 shopList_排序名 例如 shopList_sellNum

  // 首页各数据获取数量配置（因性能限制，最高为30）
  dataLimits: {
    // 帖子数据获取数量
    post: 10,
    
    // 文章数据获取数量  
    article: 6,
    
    // 动态数据获取数量
    space: 6,
    
    // 应用数据获取数量
    app: 12,
    
    // 商品数据获取数量
    shop: 8,
    
    // 置顶帖子数据获取数量
    top: 5,
    
    // 小编推荐应用数据获取数量
    topApp: 10,
    
    // 首页轮播图数据获取数量
    swiper: 5
  }
  
};

// 圈子配置
export const forumConfig = {
  // 瀑布流模式的圈子ID列表
  // 在此数组中的圈子ID将使用瀑布流显示模式，其他圈子使用列表模式
  waterfallModeIds: [
    5,6,13
    // 将需要瀑布流显示的圈子ID添加到此数组中
  ],
  
  // 卡片模式下显示的统计类型配置
  cardShowTypes: {
    // 默认显示类型：views(浏览量), comments(评论数), likes(点赞数)
    default: 'views',
    // 特定圈子的显示类型配置
    custom: {
      15: 'likes',// 圈子15的瀑布流卡片显示点赞数
    }
  },
  
  // 帖外视频播放配置
  videoConfig: {
    // 全局默认是否启用横屏播放
    enableLandscape: false,
    // 特定圈子的横屏播放配置
    // true: 启用横屏, false: 禁用横屏
    landscapeSettings: {
      // 示例：圈子id为13的帖子视频禁用横屏播放
      13: true
    }
  }
};
export const findConfig = {
  // 功能显示配置
  // 数组中的顺序决定显示顺序，第一个为默认显示的功能
  // 可选：dynamic（动态）, square（广场）, forum（圈子）, 
  //      app（应用）, article（文章）,shop（商城）
  // 昵称可改，但key不能改，也不能重复
  displayOrder: [
    {
      key: 'square', 
      name: '广场'
    },
    {
      key: 'dynamic',
      name: '动态'
    },
    {
      key: 'forum',
      name: '圈子'
    },
    {
      key: 'article',
      name: '文章'
    },
    {
      key: 'app',
      name: '应用'
    },
    {
      key: 'shop',
      name: '商城'
    }
  ],
  
// 以下勿动 以下勿动 以下勿动 以下勿动 以下勿动
// 以下勿动 以下勿动 以下勿动 以下勿动 以下勿动
// 以下勿动 以下勿动 以下勿动 以下勿动 以下勿动
// 以下勿动 以下勿动 以下勿动 以下勿动 以下勿动
// 以下勿动 以下勿动 以下勿动 以下勿动 以下勿动
// 以下勿动 以下勿动 以下勿动 以下勿动 以下勿动
// 以下勿动 以下勿动 以下勿动 以下勿动 以下勿动
// 以下勿动 以下勿动 以下勿动 以下勿动 以下勿动
// 以下勿动 以下勿动 以下勿动 以下勿动 以下勿动
// 以下勿动 以下勿动 以下勿动 以下勿动 以下勿动
  featureMap: {
    'square': {
      id: 5,
      name: '广场',
      key: 'square',
      checkCondition: () => true
    },
    'dynamic': {
      id: 1,
      name: '动态',
      key: 'dynamic',
      checkCondition: () => true
    },
    'shop': {
      id: 4,
      name: '商城',
      key: 'shop',
      checkCondition: (context) => context.shopof === 1
    },
    'forum': {
      id: 0,
      name: '圈子',
      key: 'forum',
      checkCondition: (context) => context.tzof === 1
    },
    'app': {
      id: 2,
      name: '应用',
      key: 'app',
      checkCondition: (context) => {
        // #ifdef APP-PLUS || H5
        return context.sy_appbox === true;
        // #endif
        // #ifdef MP
        return false;
        // #endif
      }
    },
    'article': {
      id: 3,
      name: '文章',
      key: 'article',
      checkCondition: (context) => context.wzof === 1
    }
  }
};


// 检查圈子是否应该使用瀑布流模式
export function shouldUseWaterfallMode(sectionId) {
  return forumConfig.waterfallModeIds.includes(parseInt(sectionId));
}

// 获取圈子的卡片显示类型
export function getCardShowType(sectionId) {
  const customType = forumConfig.cardShowTypes.custom[parseInt(sectionId)];
  return customType || forumConfig.cardShowTypes.default;
}

// 检查圈子是否启用视频横屏播放
export function shouldEnableVideoLandscape(sectionId) {
  if (!sectionId) {
    return forumConfig.videoConfig.enableLandscape;
  }
  
  const customSetting = forumConfig.videoConfig.landscapeSettings[parseInt(sectionId)];
  return customSetting !== undefined ? customSetting : forumConfig.videoConfig.enableLandscape;
}

// 获取发现页面应该显示的功能列表
export function getFindPageFeatures(context) {
  const availableFeatures = [];
  
  // 遍历显示配置，检查每个功能是否应该显示
  for (const displayItem of findConfig.displayOrder) {
    const feature = findConfig.featureMap[displayItem.key];
    if (feature && feature.checkCondition(context)) {
      availableFeatures.push({
        ...feature,
        displayName: displayItem.name // 使用配置中的显示名称
      });
    }
  }
  
  return availableFeatures;
}

// 获取默认显示的功能
export function getDefaultFindFeature(context) {
  const features = getFindPageFeatures(context);
  return features.length > 0 ? features[0] : null;
}

// 获取首页应用数据排序配置
export function getAppSortTypes() {
  return homeDataConfig.appSortTypes || [];
}

// 获取首页帖子数据排序配置
export function getPostSortTypes() {
  return homeDataConfig.postSortTypes || [];
}

// 获取首页文章数据排序配置
export function getArticleSortTypes() {
  return homeDataConfig.articleSortTypes || [];
}

// 获取首页商品数据排序配置
export function getShopSortTypes() {
  return homeDataConfig.shopSortTypes || [];
}

// 获取首页动态数据排序配置
export function getSpaceSortTypes() {
  return homeDataConfig.spaceSortTypes || [];
}

// 检查是否需要加载特定排序的数据
export function shouldLoadSortType(dataType, sortType) {
  switch(dataType) {
    case 'app':
      return homeDataConfig.appSortTypes.includes(sortType);
    case 'post':
      return homeDataConfig.postSortTypes.includes(sortType);
    case 'article':
      return homeDataConfig.articleSortTypes.includes(sortType);
    case 'shop':
      return homeDataConfig.shopSortTypes.includes(sortType);
    case 'space':
      return homeDataConfig.spaceSortTypes.includes(sortType);
    default:
      return false;
  }
}

// 获取数据数量限制（最多30条）
export function getDataLimit(dataType) {
  const limit = homeDataConfig.dataLimits[dataType] || 10;
  return Math.min(limit, 30); // 确保不超过30条
}

// 获取各数据类型的数量配置
export function getPostLimit() {
  return getDataLimit('post');
}

export function getArticleLimit() {
  return getDataLimit('article');
}

export function getSpaceLimit() {
  return getDataLimit('space');
}

export function getAppLimit() {
  return getDataLimit('app');
}

export function getShopLimit() {
  return getDataLimit('shop');
}

export function getTopLimit() {
  return getDataLimit('top');
}

export function getTopAppLimit() {
  return getDataLimit('topApp');
}

export function getSwiperLimit() {
  return getDataLimit('swiper');
}

// 默认导出配置对象
export default {
  shouldUseWaterfallMode,
  getCardShowType,
  shouldEnableVideoLandscape,
  getFindPageFeatures,
  getDefaultFindFeature,
  getAppSortTypes,
  getPostSortTypes,
  getArticleSortTypes,
  getShopSortTypes,
  getSpaceSortTypes,
  shouldLoadSortType,
  getDataLimit,
  getPostLimit,
  getArticleLimit,
  getSpaceLimit,
  getAppLimit,
  getShopLimit,
  getTopLimit,
  getTopAppLimit,
  getSwiperLimit
}; 